﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TogheterWeBuyIt.Models
{
	public class ProdutosRepository
	{
		PromocoesDBDataContext db = new PromocoesDBDataContext();

		public IQueryable<Produto> FindAllProdutos()
		{
			return db.Produtos;
		}

		public Produto GetProduto(int id)
		{
			return db.Produtos.SingleOrDefault(d => d.Id == id);
		}

		//
		// Insert/Delete Methods

		public int Add(Produto prod)
		{
			db.Produtos.InsertOnSubmit(prod);
			
			db.SubmitChanges();
			return (from produt in db.Produtos
					select produt.Id).Max() ;
		}

		public void Delete(Produto prod)
		{
			db.Produtos.DeleteOnSubmit(prod);
			db.SubmitChanges();
		}

		//
		// Persistence

		public void Save()
		{
			db.SubmitChanges();
		}

        public IQueryable<Produto> GetTopDesiredProducts(int count)
        {
            return (from product in db.Produtos
                    orderby product.DesejaProdutos.Count descending
                    select product).Take(count);
        }
		public IQueryable<Produto> GetLastDesiredProducts(int count)
		{
			return (from product in db.Produtos
					from desejo in db.DesejaProdutos
					where desejo.IdProduto == product.Id 
					&&
					desejo.DataCriado == (from desejoMax in db.DesejaProdutos
										  where desejoMax.IdProduto == product.Id
										  select desejoMax.DataCriado).Max()
					orderby desejo.DataCriado descending
					select product).Take(count);
		}

		public void InserirComentario(ComentarioProduto coment)
		{
			db.ComentarioProdutos.InsertOnSubmit(coment);
			db.SubmitChanges();
		}
	}
}
